/**   
 * 项目名：化工企业安全生产信息化管理平台
 * 日期：    2020-03-01 22:19:08  
 * Copyright (c) 2015- -版权所有     
 */

package com.joysuch.wwyt.edu.service.impl;

import javax.transaction.Transactional;

import com.joysuch.wwyt.core.exception.BusinessRestrictionsException;
import com.joysuch.wwyt.core.service.BizCodeGeneratorFacade;
import com.joysuch.wwyt.edu.bean.EduQuestionItemDetailBean;
import com.joysuch.wwyt.edu.bean.EduQuestionItemEditBean;
import com.joysuch.wwyt.edu.entity.EduQuestionItem;
import com.joysuch.wwyt.edu.repository.EduQuestionItemDao;
import com.joysuch.wwyt.edu.service.EduQuestionItemService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@Transactional
public class EduQuestionItemServiceImpl implements EduQuestionItemService {

    @Autowired
    private EduQuestionItemDao dao;
    @Autowired
    private BizCodeGeneratorFacade bizCodeGeneratorFacade;

    @Override
    public EduQuestionItem add(EduQuestionItemEditBean entity) {
        EduQuestionItem content = new EduQuestionItem();
        BeanUtils.copyProperties(entity, content, "id");
        return dao.save(content);
    }

    @Override
    public void update(EduQuestionItemEditBean entity) {
        EduQuestionItem content = dao.findById(entity.getId()).get();
        BeanUtils.copyProperties(entity, content, "id");
        dao.save(content);
    }

    @Override
    public void delete(Long id) throws BusinessRestrictionsException {
        // 校验业务逻辑是否允许删除。如本数据被其他业务关联，删除后导致其他业务不可用。不能删除时将抛出业务异常
        checkBussinessRestrictions(id);
        dao.deleteById(id);
    }

    /**
     * 校验业务逻辑是否允许删除。如本数据被其他业务关联，删除后导致其他业务不可用
     * 
     * @param id
     *            要删除的业务ID
     * @throws BussinessRestrictionsException
     *             抛出的业务异常
     */
    private void checkBussinessRestrictions(Long id) throws BusinessRestrictionsException {

    }

    @Override
    public EduQuestionItem findById(Long id) {
        return dao.findById(id).orElse(null);
    }

    @Override
    public EduQuestionItemDetailBean getById(Long id) {
        EduQuestionItem entity = findById(id);
        if (entity == null) {
            return null;
        }
        EduQuestionItemDetailBean bean = new EduQuestionItemDetailBean();
        BeanUtils.copyProperties(entity, bean);
        return bean;
    }

}
